# https://cn-sec.com/archives/2410049.html
# 四.时间戳判断来源地区
# 1.UTC时间转换
# 协调世界时，又称世界统一时间、世界标准时间、国际协调时间。由于英文（CUT）和法文（TUC）的缩写不同，作为妥协，简称UTC。
# 协调世界时是以原子时秒长为基础，在时刻上尽量接近于世界时的一种时间计量系统。Python时间解析代码如下：


import pefile
import re
import time
import datetime
import os

# 设置要解析的PE文件路径
PEfile_Path = "DirectDraw Compatibility Tool 1.01.exe"

# 第一步：解析PE文件
try:
    pe = pefile.PE(PEfile_Path, fast_load=True)
    print(f"PE对象类型: {type(pe)}")
    print(f"PE对象信息: {pe}")
    print(f"PE文件的导入哈希值: {pe.get_imphash()}")

    # 显示DOS_HEADER
    dh = pe.DOS_HEADER
    print(f"DOS_HEADER: {dh}")

    # 显示NT_HEADERS
    nh = pe.NT_HEADERS
    print(f"NT_HEADERS: {nh}")

    # 显示FILE_HEADER
    fh = pe.FILE_HEADER
    print(f"FILE_HEADER对象类型: {type(fh)}")
    print(f"FILE_HEADER信息: {str(fh)}")

    # 显示OPTIONAL_HEADER
    oh = pe.OPTIONAL_HEADER
    print(f"OPTIONAL_HEADER: {oh}")
except pefile.PEFormatError:
    print(f"文件 {PEfile_Path} 不是有效的PE文件。")
except FileNotFoundError:
    print(f"文件 {PEfile_Path} 未找到。")

# 第二步：获取UTC时间
try:
    # 通过正则表达式获取时间
    p = re.compile(r'[[](.*?)[]]', re.I | re.S | re.M)
    res = re.findall(p, str(fh))
    if len(res) > 1:
        res_time = res[1].replace(" UTC", "")
        # 获取当前时间
        current_time = time.ctime()
        print(f"当前时间: {current_time}")

        final_time = datetime.datetime.strptime(res_time, '%a %b %d %H:%M:%S %Y')
        print(f"从PE文件中提取的时间: {final_time}")
    else:
        print("未成功从FILE_HEADER中提取到时间信息。")
except Exception as e:
    print(f"获取时间信息时发生错误: {str(e)}")
    